#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

%hook NSURL

+ (id)URLWithString:(NSString *)URLString
{
    if (!URLString || URLString.length == 0) {
        return %orig; // 防止空字符串导致崩溃
    }

    static NSArray *blockedURLPatterns = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        blockedURLPatterns = @[
            // Grindr 广告 SDK 域名
            @"^https://[a-zA-Z0-9.-]+\\.applovin\\.com",        // AppLovin
            @"^https://[a-zA-Z0-9.-]+\\.applvn\\.com",          // AppLovin 备用域名
            @"^https://[a-zA-Z0-9.-]+\\.mintegral\\.net",       // Mintegral
            @"^https://[a-zA-Z0-9.-]+\\.inner-active\\.mobi",   // InnerActive
            @"^https://[a-zA-Z0-9.-]+\\.doubleclick-cn\\.net",  // Google DoubleClick (中国)
            @"^https://[a-zA-Z0-9.-]+\\.doubleclick\\.net",     // Google DoubleClick (海外)
            @"^https://[a-zA-Z0-9.-]+\\.unitychina\\.cn",       // Unity Ads (中国)
            @"^https://[a-zA-Z0-9.-]+\\.inmobi\\.com",          // InMobi
            @"^https://[a-zA-Z0-9.-]+\\.unity3d\\.com",         // Unity Ads
            @"^https://[a-zA-Z0-9.-]+\\.braze\\.com",           // Braze (用户分析)
            @"^https://[a-zA-Z0-9.-]+\\.vungle\\.com",           // Vungle

            //国内广告SDK
            // 字节跳动核心业务
            @"^https://[a-zA-Z0-9.-]+\\.byteimg\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.ibyteimg\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.bytedance\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.toutiao\\.com",       // 今日头条
            @"^https://[a-zA-Z0-9.-]+\\.snssdk\\.com",       // 抖音/TikTok SDK
            @"^https://[a-zA-Z0-9.-]+\\.zijieapi\\.com",     // 字节开放API

            // CDN及存储
            @"^https://[a-zA-Z0-9.-]+\\.bytecdn\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.bytescm\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.bj\\.openstorage\\.cn",

            // 广告与变现（穿山甲Pangle）
            @"^https://[a-zA-Z0-9.-]+\\.pangle\\.io",
            @"^https://[a-zA-Z0-9.-]+\\.pangolin-sdk-toutiao\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.pangolin-sdk-toutiao1\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.pangolin-sdk-toutiao-b\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.pglstatp-toutiao\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.pstatp\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.i18n-pglstatp\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.voiceads\\.cn",

            // 其他服务
            @"^https://[a-zA-Z0-9.-]+\\.bytetos\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.boe\\.byted\\.org",
            @"^https://[a-zA-Z0-9.-]+\\.byted\\.org",
            @"^https://[a-zA-Z0-9.-]+\\.ctobsnssdk\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.volces\\.com",       // 火山引擎
            @"^https://[a-zA-Z0-9.-]+\\.byteoversea\\.com",  // 海外业务
            @"^https://[a-zA-Z0-9.-]+\\.byteactivity",

            @"^https://[a-zA-Z0-9.-]+\\.gifshow\\.com",      // 快手主域名
            @"^https://[a-zA-Z0-9.-]+\\.e\\.kuaishou\\.com", // 快手子服务
            @"^https://[a-zA-Z0-9.-]+\\.adukwai\\.com",      // 快手广告
            @"^https://[a-zA-Z0-9.-]+\\.kuaishou\\.com",      // 快手广告            

            // 核心业务
            @"^https://[a-zA-Z0-9.-]+\\.baidu\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.baidu\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.baidustatic\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.bcebos\\.com",       // 百度云存储

            // 广告服务
            @"^https://[a-zA-Z0-9.-]+\\.gdtimg\\.com",       // 百度联盟
            @"^https://[a-zA-Z0-9.-]+\\.ugdtimg\\.com",

            // 核心业务
            @"^https://183\\.240\\.127\\.237",
            @"^https://[a-zA-Z0-9.-]+\\.qq\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.tencent\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.gtimg\\.cn",         // 腾讯云CDN

            // 第三方服务
            @"^https://[a-zA-Z0-9.-]+\\.openinstall\\.io",   // 安装跟踪

            // 核心业务
            @"^https://[a-zA-Z0-9.-]+\\.taobao\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.alicdn\\.com",       // 阿里云CDN
            @"^https://[a-zA-Z0-9.-]+\\.aliyuncs\\.com",     // 阿里云OSS
            @"^https://[a-zA-Z0-9.-]+\\.youku\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.uc\\.cn",            // UC浏览器

            // 广告服务
            @"^https://[a-zA-Z0-9.-]+\\.tanx\\.com",         // 阿里妈妈

            // 国际广告平台
            @"^https://[a-zA-Z0-9.-]+\\.inmobi\\.cn",        // InMobi
            @"^https://[a-zA-Z0-9.-]+\\.supersonicads\\.com", // IronSource
            @"^https://[a-zA-Z0-9.-]+\\.anythinktech\\.com",  // TopOn

            // 国内广告平台
            @"^https://[a-zA-Z0-9.-]+\\.admaster\\.com\\.cn", // 广告监测
            @"^https://[a-zA-Z0-9.-]+\\.miaozhen\\.com",      // 秒针系统
            @"^https://[a-zA-Z0-9.-]+\\.tuia\\.cn",           // 推啊广告
            @"^https://[a-zA-Z0-9.-]+\\.adwangmai\\.com",     // 旺脉广告
            @"^https://[a-zA-Z0-9.-]+\\.adintl\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.adtianmai\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.kuaiyiad\\.com",

            // RTB广告
            @"^https://[a-zA-Z0-9.-]+\\.1rtb\\.net",
            @"^https://[a-zA-Z0-9.-]+\\.1rtb\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.mobrtb\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.ssp\\.admobile\\.top",
            @"^https://[a-zA-Z0-9.-]+\\.admobile\\.top",

            // 国际广告平台
            @"^https://[a-zA-Z0-9.-]+\\.inmobi\\.cn",        // InMobi
            @"^https://[a-zA-Z0-9.-]+\\.supersonicads\\.com", // IronSource
            @"^https://[a-zA-Z0-9.-]+\\.anythinktech\\.com",  // TopOn

            // 国内广告平台
            @"^https://[a-zA-Z0-9.-]+\\.admaster\\.com\\.cn", // 广告监测
            @"^https://[a-zA-Z0-9.-]+\\.miaozhen\\.com",      // 秒针系统
            @"^https://[a-zA-Z0-9.-]+\\.tuia\\.cn",           // 推啊广告
            @"^https://[a-zA-Z0-9.-]+\\.adwangmai\\.com",     // 旺脉广告
            @"^https://[a-zA-Z0-9.-]+\\.adintl\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.adtianmai\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.kuaiyiad\\.com",

            // RTB广告
            @"^https://[a-zA-Z0-9.-]+\\.1rtb\\.net",
            @"^https://[a-zA-Z0-9.-]+\\.1rtb\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.mobrtb\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.ssp\\.admobile\\.top",
            @"^https://[a-zA-Z0-9.-]+\\.admobile\\.top",

            // 极光推送（JPush）
            @"^https://[a-zA-Z0-9.-]+\\.jpush\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.jiguang\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.jpush\\.io",
            @"^https://[a-zA-Z0-9.-]+\\.mob\\.com",

            // 友盟（Umeng）
            @"^https://[a-zA-Z0-9.-]+\\.umeng\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.umtrack\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.umsns\\.com",

            // 个推（Getui）
            @"^https://[a-zA-Z0-9.-]+\\.getui\\.net",
            @"^https://[a-zA-Z0-9.-]+\\.getui\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.gepush\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.igexin\\.com",

            // 网易
            @"^https://[a-zA-Z0-9.-]+\\.163\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.youdao\\.com",

            // 京东
            @"^https://[a-zA-Z0-9.-]+\\.jd\\.com",

            // 小米
            @"^https://[a-zA-Z0-9.-]+\\.xiaomi\\.com",

            // 美团
            @"^https://[a-zA-Z0-9.-]+\\.meituan\\.net",

            // 拼多多
            @"^https://[a-zA-Z0-9.-]+\\.pinduoduo\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.pddpic\\.com",

            // 杂项广告/追踪
            @"^https://[a-zA-Z0-9.-]+\\.uyunad\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.qbox\\.me",
            @"^https://[a-zA-Z0-9.-]+\\.puata\\.info",
            @"^https://[a-zA-Z0-9.-]+\\.halomobi\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.hubcloud\\.com\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.htp\\.hubcloud\\.com\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.dutils\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.yksdks\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.mobileservice\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.adfunlink\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.tianmu\\.mobi",
            @"^https://[a-zA-Z0-9.-]+\\.ubixioe\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.mosspf\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.toponad\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.toponadss\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.motowoo\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.bianxianmao\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.adtaipo\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.yixin\\.im",
            @"^https://[a-zA-Z0-9.-]+\\.readgps\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.fanglinad\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.17admob\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.slyxmobi\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.maplehaze\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.lnk0\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.bridgeoos\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.tianya\\.tv",
            @"^https://[a-zA-Z0-9.-]+\\.66mobi\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.shuzilm\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.appsad\\.cn",
            @"^https://[a-zA-Z0-9.-]+\\.ndcjl\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.lianjia\\.com",  
            @"^https://[a-zA-Z0-9.-]+\\.wkanx\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.xhgamesdk\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.bjadmix\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.qiniu\\.com",
            @"^https://[a-zA-Z0-9.-]+\\.leniugame\\.com",                                          
            @"^https://[a-zA-Z0-9.-]+\\.beizi\\.biz"

        ];
    });

    for (NSString *pattern in blockedURLPatterns) {
        NSError *error = nil;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];
        if (!error) {
            NSUInteger matches = [regex numberOfMatchesInString:URLString options:0 range:NSMakeRange(0, URLString.length)];
            if (matches > 0) {
                URLString = @"https://127.0.0.1"; // 替换为无效但安全的 URL
                break;
            }
        }
    }

    return %orig(URLString);
}

%end

